package cn.snowheart

/**
 * 字符串函数
 *
 * @author liuwanxiang
 * @version 2019/05/31
 */
class StringExample {

    static void main(String[] args) {

        // 字符串声明
        // 单引号 双引号 三个单(双)引号 均可用于声明String对象
        // 三个单(双)引号保卫时，字符串可跨越多行存在
        String a = 'Hello World'
        String b = "Hello World"
        String c = '''Hello 
                      World'''
        String d = """Hello 
                      World"""
        println a
        println b
        println c
        println d

        println("====================")

        // 正序,从0开始记录下标
        // 反序,从-1开始记录下标
        String sample = "abcdefg"
        println sample[4]      //e
        println sample[-1, -3] //ge
        println sample[1, 3]   //bd
        println sample[-1..-3] //gfe
        println sample[-3..-1] //efg
        println sample[1..3]   //bcd
        println sample[3..1]   //dcb

        println("====================")

        // 字符串运算
        println sample + "hijklmn"
        println((sample + " ") * 3)
        println "sample.length is ${sample.length()}"

        println("====================")

        // 字符串方法
        // 返回长度为21的字符串，左右以空格填充
        println sample.center(21,"*")

        // concat() 字符串拼接
        // plus() minus() 字符串拼接和删除，与上一方法类似
        // previous() next() 给定字符串的上一个和下一个值，基于char做+-操作
        // padLeft() padRight() center() 原有字符串居左/中/右，其余部分填充指定字符(串)
        // startWith() endsWith() 以什么开始(结束)
        // reverse() 字符串倒序
        // toLowerCase() toUpperCase() 大小写
        // equalsIgnoreCase() compareToIgnoreCase() 忽略大小写的判定/比较
        // subString() 根据下标获取子字符串
        // split() 基于正则分割支付穿
        // replaceAll() 替换全部字符串
        // matches() 字符串是否匹配给定的正则表达式
        // eachMatch() 处理每个正则表达式组匹配的给定String的子字符串
        // indexOf() 指定子字符串第一次出现的位置
        // getAt() 获取指定位置上的字符串值

    }

}
